NBR – Normalized Burn Ratio
NBR is a widely used spectral index for burned area and burn severity mapping. It compares NIR and SWIR2 reflectance: healthy vegetation has high NIR and low SWIR2, while burned areas show reduced NIR and increased SWIR2.
What does NBR measure?
NBR enhances the contrast between healthy vegetation, burned areas and other land covers by exploiting the strong response of fire damage in the SWIR2 region and the sensitivity of NIR to vegetation structure and moisture.
- Burned area mapping after wildfires.
- Burn severity assessment (pre-fire vs post-fire NBR).
- Long-term fire impact and vegetation recovery monitoring.
- Input feature for land-cover / disturbance classification.
Note: NBR is often used together with dNBR and RdNBR (difference / relative difference between pre- and post-fire NBR) to classify burn-severity levels.
NBR formula
NBR = (NIR - SWIR2) / (NIR + SWIR2)
Healthy, unburned vegetation typically shows high NBR, while severely burned areas show strongly reduced NBR values.
NBR = (B5 - B7) / (B5 + B7)
B5 = NIR, B7 = SWIR2.
NBR = (B4 - B7) / (B4 + B7)
B4 = NIR, B7 = SWIR2.
NBR = (B8 - B12) / (B8 + B12)
B8 = NIR, B12 = SWIR2.
Always confirm NIR and SWIR2 band numbers for your sensor. Use surface reflectance and apply scale factors as needed.
Required bands
Sensors & spectral bands
| Sensor | NIR | SWIR2 |
|---|---|---|
| Landsat 5 TM | B4 | B7 |
| Landsat 7 ETM+ | B4 | B7 |
| Landsat 8 / 9 OLI | B5 | B7 |
| Sentinel-2 MSI | B8 | B12 |
Tip: consider terrain correction and consistent pre-/post-fire image selection (date, season, viewing geometry) when using NBR for burn-severity mapping.
Interpreting NBR
| Surface type | NBR behaviour |
|---|---|
| Healthy, dense vegetation | High positive NBR |
| Moderately burned / stressed vegetation | Reduced NBR |
| Severely burned areas | Very low / negative NBR |
| Bare soil / rocks | Intermediate values |
Actual numeric thresholds depend on sensor, ecosystem and the pre-/post-fire image pair. Use local calibration or published burn-severity schemes for classification.
Using NBR in Google Earth Engine
- Select a surface-reflectance collection (e.g. Landsat 8/9 SR or Sentinel-2 SR).
- Filter by date, cloud cover, and region of interest (ROI).
- Compute NBR as (NIR - SWIR2) / (NIR + SWIR2).
- For burn severity, compute ΔNBR = NBRpre − NBRpost.
// NBR – Normalized Burn Ratio example (Landsat 8/9) in Google Earth Engine
var roi = /* your geometry here */;
// Pre-fire image (example year)
var pre = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2022-06-01', '2022-09-30')
.filter(ee.Filter.lt('CLOUD_COVER', 20))
.median();
// Post-fire image (example year)
var post = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
.filterBounds(roi)
.filterDate('2023-06-01', '2023-09-30')
.filter(ee.Filter.lt('CLOUD_COVER', 20))
.median();
// Apply scale factor to optical bands
function scaleL8(img) {
var optical = img.select(['SR_B.']).multiply(0.0000275).add(-0.2);
return img.addBands(optical, null, true);
}
pre = scaleL8(pre);
post = scaleL8(post);
// NBR = (NIR - SWIR2) / (NIR + SWIR2)
function nbr(img) {
var nir = img.select('SR_B5');
var swir2 = img.select('SR_B7');
return nir.subtract(swir2)
.divide(nir.add(swir2))
.rename('NBR');
}
var nbrPre = nbr(pre);
var nbrPost = nbr(post);
// dNBR = pre - post
var dNBR = nbrPre.subtract(nbrPost).rename('dNBR');
// Visualisation
Map.centerObject(roi, 9);
Map.addLayer(nbrPost, {
min: -1.0, max: 1.0,
palette: ['#0b1120','#1d4ed8','#22c55e','#eab308','#f97316','#f97373']
}, 'NBR (post-fire)');
Map.addLayer(dNBR, {
min: -0.5, max: 1.0,
palette: ['#0b1120','#1d4ed8','#22c55e','#eab308','#f97316','#7f1d1d']
}, 'dNBR (burn severity)');
// Optional export
Export.image.toDrive({
image: dNBR,
description: 'dNBR_Landsat8_example',
region: roi,
scale: 30,
maxPixels: 1e13
});
Important: adapt date ranges, cloud filters, and burn-severity thresholds to your specific fire event and study region.